//定义事件调度器的逻辑
class EventDispatch{
    listeners = {};//定义事件调度器的列表操作信息
    
    //定义添加事件调度器的方法内容
    addEventListener(type,listener){
        //判断是否有当前添加的类型,没有的话，初始为一个数组
        if(!this.listeners[type]){
            this.listeners[type] = [];
        }
        //key存在但是没有添加
        if(this.listeners[type].indexOf(listener) === -1){
            this.listeners[type].push(listener);
        }
    }

    //删除事件的基本操作
    removeListener(type){
        this.listeners[type] = [];//删除事件调度的绑定操作
    }

    //处理基本操作的方法使用
    dispatchEvent(type,data){
        //定义监听事件的数组方法，可能会有多个事件执行
        let listenerArray = this.listeners[type] || [];
        //如果内容为空结束执行
        if(listenerArray.length<=0) return ;
        //循环执行事件调用数组中的数据
        listenerArray.forEach(listener=>{
            listener.call(this,data);//调用事件传递对应的方法
        })
    }
}

export default EventDispatch;